<?php

namespace app\api\model;

use app\api\service\Api;
use think\Db;
use think\Request;

class AdminModel extends Api
{
    protected static $instance;

    public function __construct(Request $request = null)
    {
        parent::__construct($request);
    }

    public static function getInstance()
    {
        if (is_null(self::$instance))
        {
            self::$instance = new static();
        }
        return self::$instance;
    }

    /**
     * 获取指定角色权限
     */
    public function getRules($gid)
    {
        $gid = is_array($gid) ? $gid : [$gid];
        return Db::name('auth_group')->where([
            'id' => ['in', $gid]
        ])->value('rules');
    }

    /**
     * 获取指定角色权限组
     */
    public function columnGroup($gid, $field = 'rules')
    {
        return Db::name('auth_group')->where([
            'id' => ['in', $gid]
        ])->column($field, 'id');
    }

    /**
     * 插入系统日志
     */
    public function setLog($log)
    {
        return Db::name('admin_log')->insert($log);
    }

    /**
     * 获取指定键值信息
     */
    public function value($where, $value = 'username')
    {
        return Db::name('admin')->where($where)->value($value);
    }

    /**
     * 添加管理员信息
     */
    public function insert($data)
    {
        Db::name('admin')->insert($data);
        return Db::name('admin')->getLastInsID();
    }

    /**
     * 编辑管理员信息
     */
    public function update($aid, $data)
    {
        return Db::name('admin')->where([
            'id' => ['eq', $aid]
        ])->update($data);
    }

    /**
     * 获取指定数据总量
     */
    public function count($where)
    {
        return Db::name('admin')->where($where)->count();
    }

    /**
     * 获取管理员列表
     */
    public function select($where, $field = '*', $start = 0, $limit = 15)
    {
        return Db::name('admin')->where($where)->field($field)->limit($start, $limit)->select();
    }

    /**
     * 获取指定管理员数据
     */
    public function find($where, $field = '*')
    {
        return Db::name('admin')->where($where)->field($field)->find();
    }

    /**
     * 获取指定条件下标ID的数据
     */
    public function column($where, $field = '*', $subscript = 'id')
    {
        return Db::name('admin')->where($where)->column($field, $subscript);
    }
}